
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.sgc.view.mbean;

import com.brain.core.common.UtilCore;
import com.brain.core.view.mbean.*;
import com.brain.core.dto.ParametroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.RecursosManager;
import com.brain.sgc.dto.EvaluacionDto;
import com.brain.sgc.manager.EvaluacionManager;
import com.brain.sgc.view.util.ConstantesSgc;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Hvives
 */
@Controller("evaluacionMBean")
@Scope("session")
public class EvaluacionMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(EvaluacionMBean.class);
    @Resource
    private EvaluacionManager manager;
    @Resource
    private RecursosManager recursosManager;
    private List<EvaluacionDto> lista;
    private EvaluacionDto dto;
    private EvaluacionDto dtoFiltro;
    private String keyTitulo = "evaluacion.panel";
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;
    private List<ParametroDto> listaEstadosRequerimiento;
    private List<ParametroDto> listaSedesFiltro;
    private List<ParametroDto> listaSedesNuevo;
    private List<ParametroDto> listaModContratacion;
    private SelectItem[] siRequerimientoPrioridad;
    private boolean accesoAnular;
    private boolean accesoAprobar;
    private boolean accesoRechazar;
    private boolean accesoGuardar;

    public EvaluacionMBean() {
        this.dtoFiltro = new EvaluacionDto();
    }

    public String iniciar() {
        this.dto = null;
        this.lista = null;
        this.dtoFiltro = new EvaluacionDto();
        this.dtoFiltro.setEstado(Boolean.TRUE);
        return ConstantesSgc.UrlNavegacion.URL_LISTA_EVALUACION;
    }

    public String nuevo() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.lista = new ArrayList<EvaluacionDto>();
        this.dto = new EvaluacionDto();
        this.dto.setEstado(Boolean.TRUE);
        return ConstantesSgc.UrlNavegacion.URL_EVALUACION;
    }

    public String editar() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.EDITAR);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        //ApplicationHelper.cargarPropietarios(ConstantesSgc.Entidad.REQUERIMIENTO, this.dto.getId());
        return ConstantesSgc.UrlNavegacion.URL_EVALUACION;
    }

    public String ver() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        //ApplicationHelper.cargarPropietarios(ConstantesSgc.Entidad.REQUERIMIENTO, this.dto.getId());
        return ConstantesSgc.UrlNavegacion.URL_EVALUACION;
    }

    public void buscar(ActionEvent ae) {

        try {
            this.lista = this.manager.obtenerEvaluaciones(this.dtoFiltro);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }

    }

    public String guardar() {
        if (this.manager.guardar(this.dto) != null) {
            return retroceder();
        }
        return "";
    }

    public String retroceder() {
        buscar(null);
        sessionMBean.setAccion(ConstantesSgc.Formulario.LISTA);
        sessionMBean().setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean().getAccion()));
        return ConstantesSgc.UrlNavegacion.URL_LISTA_EVALUACION;
    }

    public void agregarPorcentaje() {
        try {
            this.manager.editar(this.dto);
            this.dto = this.manager.obtenerPorId(this.dto.getId());
            showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        EvaluacionMBean.logger = logger;
    }

    public EvaluacionManager getManager() {
        return manager;
    }

    public void setManager(EvaluacionManager manager) {
        this.manager = manager;
    }

    public RecursosManager getRecursosManager() {
        return recursosManager;
    }

    public void setRecursosManager(RecursosManager recursosManager) {
        this.recursosManager = recursosManager;
    }

    public List<EvaluacionDto> getLista() {
        return lista;
    }

    public void setLista(List<EvaluacionDto> lista) {
        this.lista = lista;
    }

    public EvaluacionDto getDto() {
        return dto;
    }

    public void setDto(EvaluacionDto dto) {
        this.dto = dto;
    }

    public EvaluacionDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(EvaluacionDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public String getKeyTitulo() {
        return keyTitulo;
    }

    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }

    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }

    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public List<ParametroDto> getListaEstadosRequerimiento() {
        return listaEstadosRequerimiento;
    }

    public void setListaEstadosRequerimiento(List<ParametroDto> listaEstadosRequerimiento) {
        this.listaEstadosRequerimiento = listaEstadosRequerimiento;
    }

    public List<ParametroDto> getListaSedesFiltro() {
        return listaSedesFiltro;
    }

    public void setListaSedesFiltro(List<ParametroDto> listaSedesFiltro) {
        this.listaSedesFiltro = listaSedesFiltro;
    }

    public List<ParametroDto> getListaSedesNuevo() {
        return listaSedesNuevo;
    }

    public void setListaSedesNuevo(List<ParametroDto> listaSedesNuevo) {
        this.listaSedesNuevo = listaSedesNuevo;
    }

    public List<ParametroDto> getListaModContratacion() {
        return listaModContratacion;
    }

    public void setListaModContratacion(List<ParametroDto> listaModContratacion) {
        this.listaModContratacion = listaModContratacion;
    }

    public SelectItem[] getSiRequerimientoPrioridad() {
        return siRequerimientoPrioridad;
    }

    public void setSiRequerimientoPrioridad(SelectItem[] siRequerimientoPrioridad) {
        this.siRequerimientoPrioridad = siRequerimientoPrioridad;
    }

    public boolean isAccesoAnular() {
        return accesoAnular;
    }

    public void setAccesoAnular(boolean accesoAnular) {
        this.accesoAnular = accesoAnular;
    }

    public boolean isAccesoAprobar() {
        return accesoAprobar;
    }

    public void setAccesoAprobar(boolean accesoAprobar) {
        this.accesoAprobar = accesoAprobar;
    }

    public boolean isAccesoRechazar() {
        return accesoRechazar;
    }

    public void setAccesoRechazar(boolean accesoRechazar) {
        this.accesoRechazar = accesoRechazar;
    }

    public boolean isAccesoGuardar() {
        return accesoGuardar;
    }

    public void setAccesoGuardar(boolean accesoGuardar) {
        this.accesoGuardar = accesoGuardar;
    }
}
